package com.naiterui.ehp.bs.im.service;

import com.naiterui.ehp.bp.bo.im.DoctorsMedicalRecordBO;
import com.naiterui.ehp.bp.bo.im.FollowUpImMsgBO;
import com.naiterui.ehp.bp.bo.im.MessageSendResultBO;
import com.naiterui.ehp.bp.bo.im.PatientMsgSendBO;
import com.naiterui.ehp.bp.bo.im.PatientMsgSendParamBO;
import com.naiterui.ehp.bp.bo.im.RecomSendDTO;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.im.dto.MessageSendResultDTO;
import com.naiterui.ehp.bs.im.dto.RecomRemindDTO;
import com.naiterui.ehp.bs.im.exception.NaiteruiIMException;
import com.naiterui.ehp.bs.im.vo.SessionVO;

public interface IMessageService {

    /**
     * 推送推荐消息
     */
    MessageSendResultDTO sendRecommend(RecomSendDTO recomSend) throws BusinessException;

    /**
     * 再次推送推荐消息(合规化审核通过)
     */
    void sendRecommend(RecomRemindDTO recomRemind) throws BusinessException;

    /**
     * 向医生发送患者用户填写的病历
     */
    @Deprecated
    Integer sendPatientsMedicalRecord(Long doctorId, Long patientId, String caseId, SessionVO sessionVo) throws BusinessException;

    /**
     * 向患者发送填写病历提醒
     */
    @Deprecated
    void sendPatientsMedicalRecordFillReminder(Long doctorId, Long patientId) throws NaiteruiIMException;

    /**
     * 向患者发送医生填写的病历
     */
    MessageSendResultBO sendDoctorsMedicalRecord(DoctorsMedicalRecordBO doctorsMedicalRecordBO) throws NaiteruiIMException;

    PatientMsgSendBO sendPatientMsg(PatientMsgSendParamBO msgSendParamBO) throws BusinessException;

    /**
     * 发送服务评价提醒
     * @param message
     * @throws BusinessException
     */
    void sendServiceEvaluation(String message) throws BusinessException;

    /**
     * 发送患者系统消息
     * @param msgSendParamBO
     * @throws BusinessException
     */
    void sendPatientSysMessage(PatientMsgSendParamBO msgSendParamBO) throws BusinessException;

    /**
     * 发送随访消息
     * 
     * @param followUpImMsg
     * @throws BusinessException
     */
    void sendFollowUpMessage(FollowUpImMsgBO followUpImMsg) throws BusinessException;
}
